package com.agencia.logica;




import java.sql.SQLException;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

import javax.xml.datatype.DatatypeConfigurationException;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;
import javax.xml.ws.WebServiceRef;
import com.agencia.dominio.Venta;
import com.imm.logica.DataVenta;
import com.imm.logica.IAdminIMMFacade;
import com.imm.logica.IAdminIMMFacadeService;


public class AdminVentaImp implements IAdminVenta {

	@WebServiceRef(IAdminIMMFacadeService.class)
	private IAdminIMMFacade immFacade;
	
	private AdminVentaImp() {}

	
	private static AdminVentaImp instancia = new AdminVentaImp();  
	 
	public static AdminVentaImp getInstance() {  
		  return instancia;  
		 }  



	public Boolean IngresarVenta(Venta venta) {		
		//falta hacer manejo de errores
		
		if (VerificarDatosVentas(venta)) {
		DataVenta retorno = immFacade.ingresarVenta(Venta2DataVenta(venta));		
		venta.setId_imm(retorno.getId());
		return true;
	
	/*	try {
			return true;
			return IAdminAgenciaCobranza.getIPersistencia().AltaVentaBD(venta);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		}
		return false;*/
		
		}
		else return false;
	  
		
}


	public Boolean AnularVenta(Double id_venta) {
		return null;
	}


	public Boolean VerificarDatosVentas(Venta venta) {
		return true;

	}
	
	private DataVenta Venta2DataVenta (Venta v){
		DataVenta a = new DataVenta();
		a.setError(0);//va sin errores
	
		try {
			a.setFechaInicio(Date2XMLDate(v.getFechaInicio()));
			a.setFechaVenta(Date2XMLDate(v.getFechaVenta()));
		} catch (DatatypeConfigurationException e) {
			e.printStackTrace();
		}
		
		a.setId(0);//va sin id de ticket
		a.setIdAgencia(1);
		a.setImporte(v.getImporte());
		a.setMatricula(v.getMatricula());
		a.setMinutos(a.getMinutos());
		return a;
	}

	private XMLGregorianCalendar Date2XMLDate(Date d) //transformador a XMLGregorianCalendar para enviar por WS
			throws DatatypeConfigurationException {

			Calendar c = new GregorianCalendar(); 
			c.setTime(d);
			int month = c.get(Calendar.MONTH)+1;
			int day = c.get(Calendar.DAY_OF_MONTH);
			int year = c.get(Calendar.YEAR);
			DatatypeFactory df = DatatypeFactory.newInstance();
			XMLGregorianCalendar x = df.newXMLGregorianCalendarDate(year, month, day, c.getTimeZone().getOffset(d.getTime())/(60*60*1000));
			return x;
			}
	
	

}
